package com.my.fss.common.entity.response;

import com.my.fss.entity.SysUser;
import lombok.Getter;
import lombok.Setter;
import org.crazycake.shiro.AuthCachePrincipal;
import org.springframework.util.StringUtils;

import java.io.Serializable;
import java.util.HashMap;
import java.util.Map;

@Setter
@Getter
public class ProfileResult implements Serializable,AuthCachePrincipal {
    private String mobile;
    private Long userId;
    private String username;
    private String company;
    private String companyId;
    private Map<String,Object> roles = new HashMap();

    /**
     *
     * @param user
     */
//    public ProfileResult(User user, List<Permission> list) {
//        this.mobile = user.getMobile();
//        if (!StringUtils.isEmpty(user.getId())){
//            this.userId = Long.parseLong(user.getId());
//        }
//
//        this.username = user.getUsername();
//        this.company = user.getCompanyName();
//        this.companyId = user.getCompanyId();
//        Set<String> menus = new HashSet<>();
//        Set<String> points = new HashSet<>();
//        Set<String> apis = new HashSet<>();
//
//        for (Permission perm : list) {
//            String code = perm.getCode();
//            if(perm.getType() == 1) {
//                menus.add(code);
//            }else if(perm.getType() == 2) {
//                points.add(code);
//            }else {
//                apis.add(code);
//            }
//        }
//        this.roles.put("menus",menus);
//        this.roles.put("points",points);
//        this.roles.put("apis",apis);
//    }


    public ProfileResult(SysUser user) {
        if (!StringUtils.isEmpty(user.getUserId())){
            this.userId = Long.parseLong(user.getUserId());
        }
//        this.mobile = user.getMobile();
//        this.username = user.getUsername();
//        this.company = user.getCompanyName();
//        this.companyId = user.getCompanyId();
//        Set<Role> roles = user.getRoles();
//        Set<String> menus = new HashSet<>();
//        Set<String> points = new HashSet<>();
//        Set<String> apis = new HashSet<>();
//        for (Role role : roles) {
//            Set<Permission> perms = role.getPermissions();
//            for (Permission perm : perms) {
//                String code = perm.getCode();
//                if(perm.getType() == 1) {
//                    menus.add(code);
//                }else if(perm.getType() == 2) {
//                    points.add(code);
//                }else {
//                    apis.add(code);
//                }
//            }
//        }
//
//        this.roles.put("menus",menus);
//        this.roles.put("points",points);
//        this.roles.put("apis",apis);
    }

    @Override
    public String getAuthCacheKey() {
        return null;
    }
}
